package codingforgreat.class36;

import java.util.Arrays;
// 来自腾讯
// 给定一个数组arr，当拿走某个数a的时候，其他所有的数都+a
// 请返回最终所有数都拿走的最大分数
// 比如: [2,3,1] [1,2,3]
// 当拿走3时，获得3分，数组变成[5,4]
// 当拿走5时，获得5分，数组变成[9]
// 当拿走9时，获得9分，数组变成[]
// 这是最大的拿取方式，返回总分17
public class Class07_PickAddMax {

	public static int pickAddMax(int[] arr) {
        if (arr == null || arr.length == 0) {
            return Integer.MIN_VALUE;
        }
        Arrays.sort(arr);
        int res = 0;
        for(int i = arr.length - 1;i >= 0;i--){
            res = (res << 1) + arr[i];
//            res += arr[i] * ( Math.pow(2  ,i));
        }
        return res;
    }

    public static void main(String[] args) {
        int arr[] = new int[]{2,3,1,0};
        System.out.println(pickAddMax(arr));
    }
}
